<!-- 我的地图 -->

<template>
  <div class="full">
    <div class="full" :class="mapClass" id="SecurePatrol-PatrolGaode-map" />

    <MapRealtime />

    <MapPoint />

    <MapTrack />
  </div>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

const { AMap } = window

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'MyMap',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb()],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('./', true, /vue$/)),

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 地图样式类
     */
    mapClass() {
      const { MAP, DICT, param } = this
      const type = param.tab === DICT.TAB[0][0] ? 'realtime' : MAP.inTrack ? 'track' : 'point'
      return `SecurePatrol-PatrolGaode-${type}`
    },
  },

  /**
   * 挂载完成 (先抽取再调用)
   */
  mounted() {
    this.init()
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 初始化
     */
    async init() {
      const { MAP } = this
      const CONFIG = await CORE.loadJSON(CORE.asset('AMAP_CONFIG.json'))
      CORE.merge(MAP, CONFIG)

      AMap.plugin('AMap.MoveAnimation', () => {
        MAP.map = new AMap.Map('SecurePatrol-PatrolGaode-map', { ...MAP.MAP })
        MAP.readyMap = true
      })
    },
  },
}
</script>

<style lang="scss">
@import './index.scss';
</style>
